package sv.ues.fia.activities;

import sv.ues.fia.R;
import sv.ues.fia.bdcontrol.ControlBDHelper;
import sv.ues.fia.entity.Asesoria;
import sv.ues.fia.fragmentcontrol.AsesoriaFragment;
import sv.ues.fia.fragmentcontrol.MyFragmentPagerAdapter;
import sv.ues.fia.session.UsuarioActual;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.Toast;
import android.widget.AdapterView.AdapterContextMenuInfo;

public class AsesoriaActivity extends FragmentActivity {
        /** Definir todos los objetos EN EL FRAGMENT **/
        ControlBDHelper bdHelper;
        AsesoriaFragment fragmentPageOne;
        AsesoriaFragment fragmentPageTwo;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.tab_pager);
                
                bdHelper = new ControlBDHelper(this);
                ViewPager pager = (ViewPager) findViewById(R.id.pager); 
                FragmentManager fMananger = getSupportFragmentManager(); 
                /** Se crean dos instancias del mismo Fragment una por cada pagina **/
                fragmentPageOne = new AsesoriaFragment();
                fragmentPageTwo = new AsesoriaFragment();
                /** Obtener los titulos de pagina del Res->String para manejar idiomas **/
                String titlePageOne = getResources().getString(R.string.page_insert);
                String titlePageTwo = getResources().getString(R.string.page_search);
        
                
                MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(
                                fMananger, fragmentPageOne, fragmentPageTwo, titlePageOne,
                                titlePageTwo);          
                pager.setAdapter(pagerAdapter);
     
        }
        
        
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                        ContextMenuInfo info) {
                super.onCreateContextMenu(menu, v, info);
                
                MenuInflater inflater = this.getMenuInflater();
                inflater.inflate(R.menu.contextual_options, menu);

        }

        @Override
        public boolean onContextItemSelected(MenuItem item) {

                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
                                .getMenuInfo();
                final int position = info.position; 
                
                switch (item.getItemId()) {
                
                /** AQUI SE EJECUTAN LAS ACCINES PARA IR A LA INTERFAZ DE MODIFICAR**/
                case R.id.action_menu_update:
                        
                        Intent intent = new Intent();
                        intent.setClass(this, AsesoriaUpdateActivity.class);                     
                        startActivity(intent);
                        
                        /** Obtener Objeto Perfil seleccionado para recuperarlo en UpdateActivity **/
                        UsuarioActual.setOBJECT( fragmentPageTwo.listResultAsesoria.get(info.position) );
                        
                        /** Se borran las listas usadas para mostrar los resultados de la busqueda **/
                        fragmentPageTwo.listItemsResult.clear();                        
                        fragmentPageTwo.adapter.notifyDataSetChanged();
                        return true;
                
                /** AQUI SE EJECUTAN LAS ACCINES BORRAR UN REGISTRO, SE MUESTRA UN DIALOG DE CONFIRMACION**/
                case R.id.action_menu_delete:

                        //Dialog de confirmacion de eliminación de registro
                        AlertDialog.Builder builder = new AlertDialog.Builder(this);
                        builder.setMessage(this.getString(R.string.deleteConfirm))
                                        .setCancelable(false)
                                        .setPositiveButton(android.R.string.ok,
                                                        new DialogInterface.OnClickListener() {
                                                                public void onClick(DialogInterface dialog,
                                                                                int id) {
                                                                        //Mas abajo se OVERRIDE la accion del SI
                                                                }
                                                        })
                                        .setNegativeButton(android.R.string.cancel,
                                                        new DialogInterface.OnClickListener() {
                                                                public void onClick(DialogInterface dialog,
                                                                                int id) {
                                                                        dialog.cancel(); // Cerra dialog y cancelar eliminacion
                                                                }
                                                        });
                        
                        
                        final AlertDialog alert = builder.create();
                        alert.show();
                        
                        // Al darle al boton SI entoncs se elimina el registro
                        alert.getButton(Dialog.BUTTON_POSITIVE).setOnClickListener(
                            new View.OnClickListener() {

                                @Override
                                public void onClick(View v) {


                                                        /** LO QUE SE DEBE HACER PARA ELIMINAR **/
                                        //Se obtiene el listResultPerfiles que es la lista del resultado de la busqueda
                                        //con esta lista se puede ubicar el Objeto Perfil a eliminar
                                        //position indica la posicion del elemento a borrar
                                						Asesoria deleteAsesoria = fragmentPageTwo.listResultAsesoria.get(position);                                                                    
                                                        
                                                        bdHelper.abrir();
                                                        //se borra y se captura el mensaje de una vez en el TOAST
                                                        Toast.makeText(AsesoriaActivity.this, bdHelper.eliminarAsesoria(deleteAsesoria),
                                                                        Toast.LENGTH_LONG).show();
                                                        bdHelper.cerrar();
                                                        
                                                        //Tambien se Elimina el elemento de las listas de la busqueda
                                                        fragmentPageTwo.listItemsResult.remove(position);
                                                        fragmentPageTwo.listResultAsesoria.remove(position);
                                                        fragmentPageTwo.adapter.notifyDataSetChanged(); // Actualizar el ListView
                                    alert.dismiss();
                                    
                                    
                                }
                            });

                        return true;
                default:
                        return super.onContextItemSelected(item);
                }

        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                getMenuInflater().inflate(R.menu.general_options, menu);
                return true;

        }
        
        /** Metodo controlador de acciones del menu general **/
        @Override
        public boolean onOptionsItemSelected(MenuItem item){
                Intent intent;
                switch (item.getItemId()) {             
                case R.id.action_close_session:
                        
                        SharedPreferences prefs = getSharedPreferences("usuario",
                                        Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = prefs.edit();
                        editor.putString("USER", "admin");
                        editor.putInt("TYPE",1);
                        editor.putBoolean("REMEMBERME", false);
                        editor.commit();
                        
                        intent = new Intent(this, LoginActivity.class);
                        this.finish();
                        this.startActivity(intent);
                        break;
                case R.id.action_exit_app:
                        this.finish();
                        break;
                case R.id.action_to_home:
                        intent = new Intent(this, HomeActivity.class);
                        this.finish();
                        this.startActivity(intent);
                        break;                  
                default:
                        break;
                }

                return super.onContextItemSelected(item);
        }

}